package com.kunzai.threadafety;

import com.kunzai.threadafety.threadcom.TrainBook;

public class RunTimeGo {
    public static void main(String[] args) {
        /**
         * 执行结果是：
         *  上面存在的问题是多个窗口存在票的重复售卖问题。
         *  那么为什么 会出现这样的问题:
         *      CPU调度问题：
         *          线程是抢占式执行在短时间内
         *          存在一个变量被多次消费。
         *          第一个线程没有执行完成第二个线程就进来进行消费了
         */
        TrainBook trainBook = new TrainBook();
        Thread one = new Thread(trainBook,"窗口一");
        Thread two = new Thread(trainBook,"窗口二");
        Thread three = new Thread(trainBook,"窗口三");
        Thread four = new Thread(trainBook,"窗口四");
        one.start();
        two.start();
        three.start();
        four.start();
        /**
         * 如何解决这个问题？
         *  一个东西四个人在用。
         *  一个run方法四个线程在调度
         *  那么需要设置一个机制，
         *  第一个线程执行完毕之后再让第二个线程进行执行任务。
         *  不一定是顺序的规定，是空间的规定。
         *  以时间去换空间
         *      java提供：
         *          同步代码块
         *          同步方法
         *          确定锁对象唯一
         */
    }
}









